import json
import logging
from flask import Flask, request, jsonify
import erniebot
#pip install erniebot -i https://mirror.baidu.com/pypi/simple

def init_log():
    #设置打印格式和等级
    logging.basicConfig(format='%(asctime)s %(filename)s %(levelname)s %(message)s', datefmt='%a, %d %b %Y %H:%M:%S',
                        level=logging.INFO)
    file_handler = logging.FileHandler('ocr.log', encoding='utf-8')
    #设置输出等级
    file_handler.setLevel(logging.INFO)
    file_handler.setFormatter(logging.Formatter('%(asctime)s %(levelname)s %(message)s'))
    logger = logging.getLogger()
    logger.handlers.append(file_handler)

init_log()

#name 是python中的特殊变量 如果文件作为主体程序执行 那么__name__的值就是__main__ 如果是被其他模块引入那么__name__就是模块名称
app = Flask(__name__)
@app.route('/speech', methods=['POST'])
def learn_speech():
    try:
        data = request.data.decode('utf-8')
        data = json.loads(data)
        audiogPath = data['audioPath']
        logging.info('audio audio path: {}'.format(audiogPath))

        erniebot.api_type = 'aistudio'
        erniebot.access_token = '<access-token-for-aistudio>'
        asr_result = erniebot.ChatCompletion.create(
            model='ernie-1.0',
            messages=[{
                'role': 'user',
                'content': "请问你是谁？"
            }, {
                'role': 'assistant',
                'content':
                    "我是百度公司开发的人工智能语言模型，我的中文名是文心一言，英文名是ERNIE-Bot，可以协助您完成范围广泛的任务并提供有关各种主题的信息，比如回答问题，提供定义和解释及建议。如果您有任何问题，请随时向我提问。"
            }, {
                'role': 'user',
                'content': "我在深圳，周末可以去哪里玩？"
            }])
        return jsonify({"code":0, "msg":"ok", "data":asr_result}), 200
    except Exception as e:
        logging.error('ocr error : %s', str(e))
        asr_result = {"code":-1, "msg":str(e)}
        return jsonify(asr_result), 200

if __name__ == '__main__':
    #可以返回中文字符
    app.config['JSON_AS_ASCII'] = False
    app.run(host='0.0.0.0', debug=True, port=5000)
